import java.util.ArrayList;
import java.util.List;

/**
 * Created by 14229 on 2020/2/27.
 */
public class Test06 {
    public static void main(String[] args) {
        List<String> list = getTest06("a1b2c3");
        System.out.println(list);


    }
    public static List<String> getTest06(String s){
        List<StringBuffer> list = new ArrayList<>();
        list.add(new StringBuffer()); // 先创建一个sb  list长度为1
        char[] chars = s.toCharArray();
        for (char aChar : chars) {
            int size = list.size();
            // 判断是否为字母
            if (Character.isLetter(aChar)){
                for (int i = 0; i < size; i++) {
                    list.add(new StringBuffer(list.get(i)));  //  复制并重新创建一个i索引的全部元素
                    list.get(i).append(Character.toLowerCase(aChar)); // 往被复制的sb里添加小写元素
                    list.get(size+i).append(Character.toUpperCase(aChar));  // 往新sb里添加大写元素
                }
            }else {
                // 如果不是字母 就会往所有sb里依次添加非字母元素
                for (int i = 0; i <size ; i++) {
                    list.get(i).append(aChar);
                }
            }
        }
        List<String> returnlist = new ArrayList<>();
        for (StringBuffer sb : list) {
            returnlist.add(sb.toString());
        }
        return returnlist;
    }
}
